﻿<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Periodo extends Controller_Restrito_Template {

	public function action_editar()
	{
		$view = new View('periodo/editar');
		
		$periodo = ORM::factory('periodo', $this->request->param('id'));
		$reserva = $periodo->reserva;
		
		if(isset($_POST['alterar']))
		{
			$inicio = $periodo::geraData($_POST['data'], $_POST['horainicio']);
			$fim = $periodo::geraData($_POST['data'], $_POST['horafim']);
			
			if(! $periodo->ocorreChoque($inicio, $fim))
			{
				$periodo->inicio = $inicio;
				$periodo->fim = $fim;
				
				if($periodo->save())
				{
					//atualiza o usuário responsável
					$reserva->usuario = ORM::factory('usuario', $this->usuario['id']);
					$reserva->datacadastro = time();
					$reserva->save();
					//envia comprovante por email
					$envioEmail = new EnvioEmail();
					$envioEmail->view = new View('reserva/email/periodoalterado');
					$envioEmail->view->reserva = $reserva;
					$envioEmail->view->responsavel = $reserva->responsavel;
					$envioEmail->email_responsavel = $reserva->responsavel->email;
					$envioEmail->assunto = 'Uma Reserva do Auditório-DCET1 tem novo horário';
					$envioEmail->enviar();
					
					Flash::message('success', 'A alteração do horário da Reserva foi bem sucedido! Os responsáveis receberam um email de confirmação!');
				}
				else {
					Flash::message('error', 'Ocorreu uma falha ao alterar o Período desejado!');
				}
			}
			else {
				Flash::message('error', 'O horário que deseja choca com um Período já cadastrado!');
			}
			
		}
		
		$view->reserva = $reserva;
		$view->periodo = $periodo;
		$view->periodos = $reserva->periodos
			->order_by('inicio')->find_all();
		
		$this->template->usuario = $this->usuario;
		$this->template->body = $view;
	}
	
	
	public function action_apagar()
	{
		$periodo = ORM::factory('periodo', $this->request->param('id'));
		$reserva = $periodo->reserva;
		
		if($periodo->loaded() && $periodo->delete())
		{
			//atualiza dados da reserva
			$reserva->usuario = ORM::factory('usuario', $this->usuario['id']);
			$reserva->datacadastro = time();
			$reserva->save();
			
			//envia comprovante por email
			$envioEmail = new EnvioEmail();
			$envioEmail->view = new View('reserva/email/periodoalterado');
			$envioEmail->view->reserva = $reserva;
			$envioEmail->responsavel_email = $reserva->responsavel->email;
			$envioEmail->assunto = 'Uma Reserva do Auditório-DCET1 teve um dos horários cancelado';
			$envioEmail->enviar();
			
			Flash::message('success', 'O Período foi cancelado com sucesso!');
		}
		else {
			Flash::message('error', 'Ocorreu uma falha ao cancelar o período!');
		}
		
		$this->request->redirect('reserva/editar/'.$reserva->id);
	}
	
} // End Periodo
